package modelo.persistenciaArquivo;

import modelo.dominio.Motorista;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;

public class PersistenciaMotorista {
	//criação da lista de motoristas
	public static ArrayList<Motorista> listMotoristas = new ArrayList<Motorista>();
	
	//cadastro de motorista
	public void cadastrarMotorista(Motorista motorista) {
		listMotoristas.add(motorista);
	}
	
	//lista de motoristas
	public static ArrayList<Motorista> getListMotorista() {
		return listMotoristas;
	}
	
	//pesquisa motorista pela cnh
	public Motorista consultaMotorista(Motorista motorista) {
		for(int i = 0; i < listMotoristas.size(); i++) {
			if(listMotoristas.get(i).getCnh().equals(motorista.getCnh())){
				return listMotoristas.get(i);
			}
		}
		return null;
	}
		
	//carregar lista de motorista
	public boolean carregarMotorista(ArrayList<Motorista> listMotoristas) throws IOException{
		String nome = "";
		long cpf;
		String endereco = "";
		String telefone = "";
		String cnh = "";
		String linha;
		Motorista motorista;
		
		File fp = new File("Motoristas.txt");
		
		if(!fp.exists()) {
			return false;
		}
		
		BufferedReader br = new BufferedReader(new FileReader(fp));
		
		while((linha = br.readLine())!= null) {
			String[] str = linha.split(";");
			
			cnh = str[0];
			nome = str[1];
			cpf = Long.parseLong(str[2]);
			endereco = str[3];
			telefone = str[4];
			Motorista novoMotorista = new Motorista(cnh,nome, cpf, endereco, telefone);
			cadastrarMotorista(novoMotorista);
			
		}
		br.close();
		return true;
	
	}
	
	//salva motorista em arquivo
	public static void salvarMotorista(ArrayList<Motorista> listMotoristas) throws IOException {
		String nome;
		long cpf;
		String telefone;
		String endereco;
		String cnh;
		
		FileWriter fp = new FileWriter(new File("Motoristas.txt"));
		
		for(int i =0; i < listMotoristas.size(); i++) {
			nome = listMotoristas.get(i).getNome();
			cpf = listMotoristas.get(i).getCpf();
			telefone = listMotoristas.get(i).getTelefone();
			endereco = listMotoristas.get(i).getEndereco();
			cnh = listMotoristas.get(i).getCnh();
			fp.write(nome+";"+ cpf+";"+ telefone+";"+ endereco+";"+ cnh+"\n");
		}
		fp.close();
		
	}
	
	//acrescenta motorista em arquivo
	public void acrescentarMotorista(Motorista motorista) throws IOException {
		
		BufferedWriter writer = new BufferedWriter(new FileWriter("Motoristas.txt", true));
		PrintWriter output = new PrintWriter(writer);
		
		output.println(motorista.getNome() + ";"
		+ motorista.getCpf()+ ";"
		+ motorista.getTelefone()+ ";"
		+ motorista.getEndereco()+ ";"
		+ motorista.getCnh());
		writer.close();
		output.close();
		
	}
	
}
